package org.example.dataStruct;

import java.util.Arrays;
import java.util.Queue;

public class SelfDefineList {
    /*
   数组
     */
    public int[]arr;
/*
  初始容量
 */
    private int capacity=10;

    /*
    * 列表数据的个数
    * */
    private int size=0;

    /*
    * 扩容倍数
    * */
    private int extendRatio=2;

    /*
    构造初始化
     */
    public SelfDefineList(){
        arr=new int[capacity];
    }

    /**
     * 获取列表索引位置的元素
     * @param index
     * @return
     */
    public int get(int index){
        if(index<0||index>size){
            throw new IndexOutOfBoundsException("超出实际范围");
        }
        return arr[index];
    }
    public void set(int index,int num){
        if(index<0||index>size){
            throw new IndexOutOfBoundsException("超出实际范围");
        }
        arr[index]=num;
    }

    /**
     * 添加元素
     * @param num
     */
    public void add(int num){
        if(size==capacity){
            extendCapacity();
        }
        arr[size]=num;
        size++;
    }

    /**
     * 插入元素
     * @param index
     * @param num
     */
    public void insert(int index,int num) {
        if (index < 0 || index > size) {
            throw new IndexOutOfBoundsException("超出实际范围");
        }
        if (size == capacity) {
            extendCapacity();
        }
        for (int i = size - 1; i >= index; i--) {
            arr[i+1] = arr[i];
        }
        arr[index] = num;
        size++;
    }

    /**
     * 数组扩容
     */
    public void extendCapacity(){
        arr= Arrays.copyOf(arr,capacity*extendRatio);
        capacity=arr.length;
    }
}
